Layered queue based coordination of potentially destructive actions in a dispersed storage network memory

ABSTRACT

Methods for use in a dispersed storage network (DSN) to coordinate potentially harmful maintenance tasks performed on storage units of the DSN. For each type of maintenance task to be performed on the storage units, an ordered list (e.g., a queue) is generated. Each entry of an ordered list corresponds to a particular storage unit. For each ordered list, a first entry is examined to determine whether to initiate execution of the associated task(s). The determination includes identifying a storage unit associated with the first entry and predicting the impact of performing the task including, for example, the impact on a storage set(s) that includes the identified storage unit. When the predicted impact compares favorably to an impact threshold level, the task is initiated and the selected entry is deleted. When the comparison is unfavorable, the selected entry is moved to another location in the ordered list for postponed execution.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims priority pursuant to 35 U.S.C. §119(e) to U.S.Provisional Application No. 62/222,819, entitled “IDENTIFYING AN ENCODEDDATA SLICE FOR REBUILDING,” filed Sep. 24, 2015, which is herebyincorporated herein by reference in its entirety and made part of thepresent U.S. Utility Patent Application for all purposes.

STATEMENT REGARDING FEDERALLY SPONSORED RESEARCH OR DEVELOPMENT

Not applicable.

INCORPORATION-BY-REFERENCE OF MATERIAL SUBMITTED ON A COMPACT DISC

Not applicable.

BACKGROUND OF THE INVENTION

Technical Field of the Invention

This invention relates generally to computer networks, and moreparticularly to coordination of potentially harmful maintenance actionsin a dispersed storage network.

Description of Related Art

Computing devices are known to communicate data, process data, and/orstore data. Such computing devices range from wireless smart phones,laptops, tablets, personal computers (PC), work stations, and video gamedevices, to data centers that support millions of web searches, stocktrades, or on-line purchases every day. In general, a computing deviceincludes a central processing unit (CPU), a memory system, userinput/output interfaces, peripheral device interfaces, and aninterconnecting bus structure.

As is further known, a computer may effectively extend its CPU by using“cloud computing” to perform one or more computing functions (e.g., aservice, an application, an algorithm, an arithmetic logic function,etc.) on behalf of the computer. Further, for large services,applications, and/or functions, cloud computing may be performed bymultiple cloud computing resources in a distributed manner to improvethe response time for completion of the service, application, and/orfunction. For example, Hadoop is an open source software framework thatsupports distributed applications enabling application execution bythousands of computers.

In addition to cloud computing, a computer may use “cloud storage” aspart of its memory system. As is known, cloud storage enables a user,via its computer, to store files, applications, etc. on a remote storagesystem. The remote storage system may include a RAID (redundant array ofindependent disks) system and/or a dispersed storage system that uses anerror correction scheme to encode data for storage.

In a RAID system, a RAID controller adds parity data to the originaldata before storing it across an array of disks. The parity data iscalculated from the original data such that the failure of a single disktypically will not result in the loss of the original data. While RAIDsystems can address certain memory device failures, these systems maysuffer from effectiveness, efficiency and security issues. For instance,as more disks are added to the array, the probability of a disk failurerises, which may increase maintenance costs. When a disk fails, forexample, it needs to be manually replaced before another disk(s) failsand the data stored in the RAID system is lost. To reduce the risk ofdata loss, data on a RAID device is often copied to one or more otherRAID devices. While this may reduce the possibility of data loss, italso raises security issues since multiple copies of data may beavailable, thereby increasing the chances of unauthorized access. Inaddition, co-location of some RAID devices may result in a risk of acomplete data loss in the event of a natural disaster, fire, powersurge/outage, etc.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWING(S)

FIG. 1 is a schematic block diagram of an embodiment of a dispersed ordistributed storage network (DSN) in accordance with the presentdisclosure;

FIG. 2 is a schematic block diagram of an embodiment of a computing corein accordance with the present disclosure;

FIG. 3 is a schematic block diagram of an example of dispersed storageerror encoding of data in accordance with the present disclosure;

FIG. 4 is a schematic block diagram of a generic example of an errorencoding function in accordance with the present disclosure;

FIG. 5 is a schematic block diagram of a specific example of an errorencoding function in accordance with the present disclosure;

FIG. 6 is a schematic block diagram of an example of slice naminginformation for an encoded data slice (EDS) in accordance with thepresent disclosure;

FIG. 7 is a schematic block diagram of an example of dispersed storageerror decoding of data in accordance with the present disclosure;

FIG. 8 is a schematic block diagram of a generic example of an errordecoding function in accordance with the present disclosure;

FIG. 9 is a schematic block diagram of an example of DSN memory storinga plurality of data and a plurality of task codes in accordance with thepresent disclosure;

FIG. 10 is a schematic block diagram of an example of a DSN performingtasks on stored data/storage units in accordance with the presentdisclosure;

FIG. 11 is a schematic block diagram of an embodiment of a taskdistribution module facilitating the example of FIG. 10 in accordancewith the present disclosure;

FIG. 12 is schematic block diagram of an embodiment of a DSN inaccordance with the present disclosure; and

FIG. 13 is a logic diagram illustrating an example of initiating amaintenance task in accordance with the present disclosure.

DETAILED DESCRIPTION OF THE INVENTION

FIG. 1 is a schematic block diagram of an embodiment of a dispersed, ordistributed, storage network (DSN) 10 that includes a plurality ofcomputing devices 12-16, a managing unit 18, an integrity processingunit 20, and a DSN memory 22. The components of the DSN 10 are coupledto a network 24, which may include one or more wireless and/or wirelined communication systems; one or more non-public intranet systemsand/or public internet systems; and/or one or more local area networks(LAN) and/or wide area networks (WAN).

The DSN memory 22 includes a plurality of storage units 36 that may belocated at geographically different sites (e.g., one in Chicago, one inMilwaukee, etc.), at a common site, or a combination thereof. Forexample, if the DSN memory 22 includes eight storage units 36, eachstorage unit is located at a different site. As another example, if theDSN memory 22 includes eight storage units 36, all eight storage unitsare located at the same site. As yet another example, if the DSN memory22 includes eight storage units 36, a first pair of storage units are ata first common site, a second pair of storage units are at a secondcommon site, a third pair of storage units are at a third common site,and a fourth pair of storage units are at a fourth common site. Notethat a DSN memory 22 may include more or less than eight storage units36. Further note that each storage unit 36 includes a computing core (asshown in FIG. 2, or components thereof) and a plurality of memorydevices for storing dispersed storage (DS) error encoded data.

Each of the storage units 36 is operable to store DS error encoded dataand/or to execute (e.g., in a distributed manner) maintenance tasksand/or data-related tasks. The tasks may be a simple function (e.g., amathematical function, a logic function, an identify function, a findfunction, a search engine function, a replace function, etc.), a complexfunction (e.g., compression, human and/or computer language translation,text-to-voice conversion, voice-to-text conversion, etc.), multiplesimple and/or complex functions, one or more algorithms, one or moreapplications, maintenance tasks such as those described below, etc.

Each of the computing devices 12-16, the managing unit 18, and theintegrity processing unit 20 include a computing core 26, which includesnetwork interfaces 30-33. Computing devices 12-16 may each be a portablecomputing device and/or a fixed computing device. A portable computingdevice may be a social networking device, a gaming device, a cell phone,a smart phone, a digital assistant, a digital music player, a digitalvideo player, a laptop computer, a handheld computer, a tablet, a videogame controller, and/or any other portable device that includes acomputing core. A fixed computing device may be a computer (PC), acomputer server, a cable set-top box, a satellite receiver, a televisionset, a printer, a fax machine, home entertainment equipment, a videogame console, and/or any type of home or office computing equipment.Note that each of the managing unit 18 and the integrity processing unit20 may be separate computing devices, may be a common computing device,and/or may be integrated into one or more of the computing devices 12-16and/or into one or more of the storage units 36.

Each interface 30, 32, and 33 includes software and hardware to supportone or more communication links via the network 24 indirectly and/ordirectly. For example, interface 30 supports a communication link (e.g.,wired, wireless, direct, via a LAN, via the network 24, etc.) betweencomputing devices 14 and 16. As another example, interface 32 supportscommunication links (e.g., a wired connection, a wireless connection, aLAN connection, and/or any other type of connection to/from the network24) between computing devices 12 and 16 and the DSN memory 22. As yetanother example, interface 33 supports a communication link for each ofthe managing unit 18 and the integrity processing unit 20 to the network24.

Computing devices 12 and 16 include a dispersed storage (DS) clientmodule 34, which enables the computing device to dispersed storage errorencode and decode data (e.g., data object 40) as subsequently describedwith reference to one or more of FIGS. 3-8. In this example embodiment,computing device 16 functions as a dispersed storage processing agentfor computing device 14. In this role, computing device 16 dispersedstorage error encodes and decodes data on behalf of computing device 14.With the use of dispersed storage error encoding and decoding, the DSN10 is tolerant of a significant number of storage unit failures (thenumber of failures is based on parameters of the dispersed storage errorencoding function) without loss of data and without the need for aredundant or backup copies of the data. Further, the DSN 10 stores datafor an indefinite period of time without data loss and in a securemanner (e.g., the system is very resistant to unauthorized attempts ataccessing the data).

In operation, the managing unit 18 performs DS management services. Forexample, the managing unit 18 establishes distributed data storageparameters (e.g., vault creation, distributed storage parameters,security parameters, billing information, user profile information,etc.) for computing devices 12-14 individually or as part of a group ofuser devices. As a specific example, the managing unit 18 coordinatescreation of a vault (e.g., a virtual memory block associated with aportion of an overall namespace of the DSN) within the DSN memory 22 fora user device, a group of devices, or for public access and establishesper vault dispersed storage (DS) error encoding parameters for a vault.The managing unit 18 facilitates storage of DS error encoding parametersfor each vault by updating registry information of the DSN 10, where theregistry information may be stored in the DSN memory 22, a computingdevice 12-16, the managing unit 18, and/or the integrity processing unit20.

The managing unit 18 creates and stores user profile information (e.g.,an access control list (ACL)) in local memory and/or within memory ofthe DSN memory 22. The user profile information includes authenticationinformation, permissions, and/or the security parameters. The securityparameters may include encryption/decryption scheme, one or moreencryption keys, key generation scheme, and/or data encoding/decodingscheme.

The managing unit 18 creates billing information for a particular user,a user group, a vault access, public vault access, etc. For instance,the managing unit 18 tracks the number of times a user accesses anon-public vault and/or public vaults, which can be used to generateper-access billing information. In another instance, the managing unit18 tracks the amount of data stored and/or retrieved by a user deviceand/or a user group, which can be used to generate per-data-amountbilling information.

As another example, the managing unit 18 performs network operations,network administration, and/or network maintenance. Network operationsincludes authenticating user data allocation requests (e.g., read and/orwrite requests), managing creation of vaults, establishingauthentication credentials for user devices, adding/deleting components(e.g., user devices, storage units, and/or computing devices with a DSclient module 34) to/from the DSN 10, and/or establishing authenticationcredentials for the storage units 36. Network administration includesmonitoring devices and/or units for failures, maintaining vaultinformation, determining device and/or unit activation status,determining device and/or unit loading, and/or determining any othersystem level operation that affects the performance level of the DSN 10.Network maintenance includes facilitating replacing, upgrading,repairing, and/or expanding a device and/or unit of the DSN 10.

To support data storage integrity verification within the DSN 10, theintegrity processing unit 20 (and/or other devices in the DSN 10) mayperform rebuilding of ‘bad’ or missing encoded data slices. At a highlevel, the integrity processing unit 20 performs rebuilding byperiodically attempting to retrieve/list encoded data slices, and/orslice names of the encoded data slices, from the DSN memory 22.Retrieved encoded slices are checked for errors due to data corruption,outdated versioning, etc. If a slice includes an error, it is flagged asa ‘bad’ or ‘corrupt’ slice. Encoded data slices that are not receivedand/or not listed may be flagged as missing slices. Bad and/or missingslices may be subsequently rebuilt using other retrieved encoded dataslices that are deemed to be good slices in order to produce rebuiltslices. A multi-stage decoding process may be employed in certaincircumstances to recover data even when the number of valid encoded dataslices of a set of encoded data slices is less than a relevant decodethreshold number. The rebuilt slices may then be written to DSN memory22. Note that the integrity processing unit 20 may be a separate unit asshown, included in DSN memory 22, included in the computing device 16,and/or distributed among the storage units 36. Examples of task queuing,initiation and execution by DSN memory 22 is discussed in greater detailwith reference to FIGS. 9-13.

FIG. 2 is a schematic block diagram of an embodiment of a computing core26 that includes a processing module 50, a memory controller 52, mainmemory 54, a video graphics processing unit 55, an input/output (10)controller 56, a peripheral component interconnect (PCI) interface 58,an IO interface module 60, at least one IO device interface module 62, aread only memory (ROM) basic input output system (BIOS) 64, and one ormore memory interface modules. The one or more memory interfacemodule(s) includes one or more of a universal serial bus (USB) interfacemodule 66, a host bus adapter (HBA) interface module 68, a networkinterface module 70, a flash interface module 72, a hard drive interfacemodule 74, and a DSN interface module 76.

The DSN interface module 76 functions to mimic a conventional operatingsystem (OS) file system interface (e.g., network file system (NFS),flash file system (FFS), disk file system (DFS), file transfer protocol(FTP), web-based distributed authoring and versioning (WebDAV), etc.)and/or a block memory interface (e.g., small computer system interface(SCSI), internet small computer system interface (iSCSI), etc.). The DSNinterface module 76 and/or the network interface module 70 may functionas one or more of the interface 30-33 of FIG. 1. Note that the IO deviceinterface module 62 and/or the memory interface modules 66-76 may becollectively or individually referred to as IO ports.

FIG. 3 is a schematic block diagram of an example of dispersed storageerror encoding of data. When a computing device 12 or 16 has data tostore it disperse storage error encodes the data in accordance with adispersed storage error encoding process based on dispersed storageerror encoding parameters. The dispersed storage error encodingparameters include an encoding function (e.g., information dispersalalgorithm, Reed-Solomon, Cauchy Reed-Solomon, systematic encoding,non-systematic encoding, on-line codes, etc.), a data segmentingprotocol (e.g., data segment size, fixed, variable, etc.), and per datasegment encoding values. The per data segment encoding values include atotal, or pillar width, number (T) of encoded data slices per encodingof a data segment (i.e., in a set of encoded data slices); a decodethreshold number (D) of encoded data slices of a set of encoded dataslices that are needed to recover the data segment; a read thresholdnumber (R) of encoded data slices to indicate a number of encoded dataslices per set to be read from storage for decoding of the data segment;and/or a write threshold number (W) to indicate a number of encoded dataslices per set that must be accurately stored before the encoded datasegment is deemed to have been properly stored. The dispersed storageerror encoding parameters may further include slicing information (e.g.,the number of encoded data slices that will be created for each datasegment) and/or slice security information (e.g., per encoded data sliceencryption, compression, integrity checksum, etc.).

In the present example, Cauchy Reed-Solomon has been selected as theencoding function (a generic example is shown in FIG. 4 and a specificexample is shown in FIG. 5); the data segmenting protocol is to dividethe data object into fixed sized data segments; and the per data segmentencoding values include: a pillar width of five, a decode threshold ofthree, a read threshold of four, and a write threshold of four. Inaccordance with the data segmenting protocol, the computing device 12 or16 divides the data (e.g., a file (e.g., text, video, audio, etc.), adata object, or other data arrangement) into a plurality of fixed sizeddata segments (e.g., 1 through Y of a fixed size in range of Kilo-bytesto Tera-bytes or more). The number of data segments created is dependentof the size of the data and the data segmenting protocol.

The computing device 12 or 16 then disperse storage error encodes a datasegment using the selected encoding function (e.g., Cauchy Reed-Solomon)to produce a set of encoded data slices. FIG. 4 illustrates a genericCauchy Reed-Solomon encoding function, which includes an encoding matrix(EM), a data matrix (DM), and a coded matrix (CM). The size of theencoding matrix (EM) is dependent on the pillar width number (T) and thedecode threshold number (D) of selected per data segment encodingvalues. To produce the data matrix (DM), the data segment is dividedinto a plurality of data blocks and the data blocks are arranged into Dnumber of rows with Z data blocks per row. Note that Z is a function ofthe number of data blocks created from the data segment and the decodethreshold number (D). The coded matrix is produced by matrix multiplyingthe data matrix by the encoding matrix.

FIG. 5 illustrates a specific example of Cauchy Reed-Solomon encodingwith a pillar number (T) of five and decode threshold number of three.In this example, a first data segment is divided into twelve data blocks(D1-D12). The coded matrix includes five rows of coded data blocks,where the first row of X11-X14 corresponds to a first encoded data slice(EDS 1_1), the second row of X21-X24 corresponds to a second encodeddata slice (EDS 2_1), the third row of X31-X34 corresponds to a thirdencoded data slice (EDS 3_1), the fourth row of X41-X44 corresponds to afourth encoded data slice (EDS 4_1), and the fifth row of X51-X54corresponds to a fifth encoded data slice (EDS 5_1). Note that thesecond number of the EDS designation corresponds to the data segmentnumber. In the illustrated example, the value X11=aD1+bD5+cD9,X12=aD2+bD6+cD10, . . . X53=mD3+nD7+oD11, and X54=mD4+nD8+oD12.

Returning to the discussion of FIG. 3, the computing device also createsa slice name (SN) for each encoded data slice (EDS) in the set ofencoded data slices. A typical format for a slice name 80 is shown inFIG. 6. As shown, the slice name (SN) 80 includes a pillar number of theencoded data slice (e.g., one of 1-T), a data segment number (e.g., oneof 1-Y), a vault identifier (ID), a data object identifier (ID), and mayfurther include revision level information of the encoded data slices.The slice name functions as at least part of a DSN address for theencoded data slice for storage and retrieval from the DSN memory 22.

As a result of encoding, the computing device 12 or 16 produces aplurality of sets of encoded data slices, which are provided with theirrespective slice names to the storage units for storage. As shown, thefirst set of encoded data slices includes EDS 1_1 through EDS 5_1 andthe first set of slice names includes SN 1_1 through SN 5_1 and the lastset of encoded data slices includes EDS 1_Y through EDS 5_Y and the lastset of slice names includes SN 1_Y through SN 5_Y.

FIG. 7 is a schematic block diagram of an example of dispersed storageerror decoding of a data object that was dispersed storage error encodedand stored in the example of FIG. 4. In this example, the computingdevice 12 or 16 retrieves from the storage units at least the decodethreshold number of encoded data slices per data segment. As a specificexample, the computing device retrieves a read threshold number ofencoded data slices.

In order to recover a data segment from a decode threshold number ofencoded data slices, the computing device uses a decoding function asshown in FIG. 8. As shown, the decoding function is essentially aninverse of the encoding function of FIG. 4. The coded matrix includes adecode threshold number of rows (e.g., three in this example) and thedecoding matrix in an inversion of the encoding matrix that includes thecorresponding rows of the coded matrix. For example, if the coded matrixincludes rows 1, 2, and 4, the encoding matrix is reduced to rows 1, 2,and 4, and then inverted to produce the decoding matrix.

FIG. 9 is a schematic block diagram of an example of DSN memory 22storing a plurality of data and a plurality of task codes in accordancewith the present disclosure. The illustrated DSN memory 22 includes aplurality of storage units 1-n (where, for example, n is an integergreater than or equal to three). Each of the storage units includes a DSclient module 34, a controller 86, one or more task execution modules84, and memory 88.

In this example, the DSN memory 22 stores, in memory 88 of the storageunits, a plurality of dispersed storage (DS) error encoded data (e.g.,1-n, where n is an integer greater than or equal to two) and stores aplurality of DS encoded task codes (e.g., 1-k, where k is an integergreater than or equal to two). The DS error encoded data may be encodedin accordance with one or more examples described with reference toFIGS. 3-6, and organized (for example) in slice groupings or pillargroups. The data that is encoded into the DS error encoded data may beof any size and/or of any content. For example, the data may be one ormore digital books, a copy of a company's emails, a large-scale Internetsearch, a video security file, one or more entertainment video files(e.g., television programs, movies, etc.), data files, and/or any otherlarge amount of data (e.g., greater than a few Terabytes).

The tasks that are encoded into a DS encoded task code may be a simplefunction (e.g., a mathematical function, a logic function, an identifyfunction, a find function, a search engine function, a replace function,etc.), a complex function (e.g., compression, human and/or computerlanguage translation, text-to-voice conversion, voice-to-textconversion, etc.), multiple simple and/or complex functions, one or morealgorithms, one or more applications, maintenance-related (e.g., tosupport hardware upgrades, reboot operations, process restarts,installation of software patches), etc. The tasks may be encoded intothe DS encoded task code in a similar manner to encoded data (e.g.,organized in slice groupings or pillar groups). Operational codes andinstructions for certain types of tasks performed by the DSN memory 22,such as task types relating to some maintenance operations that are notassociated with DS error encoded data stored in memory 88, may bemaintained by other devices/modules of a DSN.

In an example of operation, a DS client module of a user device orcomputing device issues a dispersed storage task (DST) request to theDSN memory 22. The DST request may include a request to retrieve storeddata, or a portion thereof, may include a request to store data that isincluded with the DST request, may include a request to perform one ormore tasks on stored data, may include a request to perform one or moretasks on data included with the DST request, may initiate a maintenancetask, etc. In the cases where the DST request includes a request tostore data or to retrieve data, the DS client module and/or the DSNmemory processes the request. In the case where the DST request includesa request to perform one or more tasks on data included with the DSTrequest, or stored data, the DS client module and/or the DSN memoryprocess the DST request.

Excluding certain maintenance tasks and the like, the DS client modulegenerally identifies data and one or more tasks for the DSN memory toexecute upon the identified data. The DST request may be for a one-timeexecution of the task or for an on-going execution of the task. As anexample of the latter, as a company generates daily emails, the DSTrequest may be to daily search new emails for inappropriate content and,if found, record the content, the email sender(s), the emailrecipient(s), email routing information, notify human resources of theidentified email, etc.

The controller 86 facilitates execution of tasks and/or partial task(s).In an example, the controller 86 interprets a partial task in light ofthe capabilities of the task execution module(s) 84. The capabilitiesinclude one or more of MIPS capabilities, processing resources (e.g.,quantity and capability of microprocessors, CPUs, digital signalprocessors, co-processor, microcontrollers, arithmetic logic circuitry,and/or any other analog and/or digital processing circuitry),availability of the processing resources, etc. If the controller 86determines that the task execution module(s) 84 have sufficientcapabilities, it generates task control information. As described morefully below, the task execution module(s) 84 and/or controller 86 mayfurther operate to provide status information for use in predicting theimpact of performing a given task before initiating the task.

The task control information may be a generic instruction (e.g., performthe task on the stored slice grouping) or a series of operational codes.In the former instance, the task execution module 84 includes aco-processor function specifically configured (fixed or programmed) toperform the desired task. In the latter instance, the task executionmodule 84 includes a general processor topology where the controllerstores an algorithm corresponding to the particular task. In thisinstance, the controller 86 provides the operational codes (e.g.,assembly language, source code of a programming language, object code,etc.) of the algorithm to the task execution module 84 for execution.

FIG. 10 is a schematic block diagram of an example of a DSN performingtasks on stored data and/or storage units in accordance with the presentdisclosure. In this example, two dispersed storage (DS) client modules1-2 are shown: the first may be associated with a user device and thesecond may be associated with a processing unit or a high priority userdevice (e.g., high priority clearance user, system administrator, etc.).Each DS client module includes a list of stored data 92 and a list oftasks codes 94. The list of stored data 92 includes one or more entriesof data identifying information, where each entry identifies data storedin the DSN memory 22. The data identifying information (e.g., data ID)includes one or more of a data file name, a data file directory listing,DSTN addressing information of the data, a data object identifier, etc.The list of task codes 94 includes one or more entries of task codeidentifying information, when each entry identifies task codes stored inthe DSN memory 22. The task code identifying information (e.g., task ID)includes one or more of a task file name, a task file directory listing,DSTN addressing information of the task, another type of identifier toidentify the task, etc.

As illustrated, the list of data 92 and the list of task codes 94 has asmaller number of entries for the first DS client module than thecorresponding lists of the second DS client module. This may occurbecause the user device associated with the first DS client module hasfewer privileges in the DSN than the device associated with the secondDS client module. Alternatively, this may occur because the user deviceassociated with the first DS client module serves fewer users than thedevice associated with the second DS client module and is restricted bythe DSN accordingly. As yet another alternative, this may occur throughno restraints by the DSN, but rather because the operator of the userdevice associated with the first DS client module has selected fewerdata and/or fewer tasks than the operator of the device associated withthe second DS client module.

In an example of operation, the first DS client module selects one ormore data entries and one or more tasks from their respective lists(e.g., illustrated as selected data ID 96 and selected task ID 98,respectively). The first DS client module sends its selections to a taskdistribution module 90. The task distribution module 90 may be within astand-alone device of the DSN, may be within the user device thatcontains the first DS client module, or may be within the DSN memory 22.

Regardless of the location of the task distribution module, it generatesDST allocation information 100 from the selected task ID 98 and theselected data ID 96. The DST allocation information 100 includes datapartitioning information, task execution information, and/orintermediate result information. The task distribution module 90 sendsthe DST allocation information 100 to the DSN memory 22. Note thatexamples of the DST allocation information are described in conjunctionwith FIG. 11.

The DSN memory 22 interprets the DST allocation information 100 toidentify the stored DS error encoded data (e.g., DS error encoded data2) and to identify the stored DS error encoded task code (e.g., DS errorencoded task code 1). In addition, the DSN memory 22 interprets the DSTallocation information 100 to determine how the data is to bepartitioned and how the task is to be partitioned. The DSN memory 22also determines whether the error encoded data corresponding to selecteddata ID 96 needs to be converted from pillar grouping to slice grouping.If so, the DSN memory 22 converts the selected DS error encoded datainto slice groupings and stores the slice grouping DS error encoded databy overwriting the pillar grouping DS error encoded data or by storingit in a different location in the memory of the DSN memory 22 (i.e.,does not overwrite the pillar grouping DS error encoded data).

The DSN memory 22 partitions the data and the task as indicated in theDST allocation information 100 and sends the portions to selectedstorage units of the DSN memory 22. Each of the selected storage unitsperforms its partial task(s) on its slice groupings to produce partialresults. The DSN memory 22 collects the partial results from theselected storage units and provides them, as result information 102, tothe task distribution module. The result information 102 may be thecollected partial results, one or more final results as produced by theDSN memory 22 from processing the partial results in accordance with theDST allocation information 100, or one or more intermediate results asproduced by the DSN memory 22 from processing the partial results inaccordance with the DST allocation information 100.

The task distribution module 90 receives the result information 102 andprovides one or more final results 104 therefrom to the first DS clientmodule. The final result(s) 104 may be result information 102 or aresult(s) of processing of the result information 102 by the taskdistribution module.

In concurrence with processing the selected task of the first DS clientmodule, the DSN may process the selected task(s) of the second DS clientmodule on the selected data(s) of the second DS client module.Alternatively, the DSN may process the second DS client module's requestsubsequent to, or preceding, that of the first DS client module.Regardless of the ordering and/or parallel processing of the DS clientmodule requests, the second DS client module provides its selected dataID 96 and selected task ID 98 to a task distribution module 90. If thetask distribution module 90 is a separate device of the DSN or withinthe DSN memory, the task distribution modules 90 coupled to the firstand second DS client modules may be the same module. The taskdistribution module 90 processes the request of the second DS clientmodule in a similar manner as it processed the request of the first DSclient module.

FIG. 11 is a schematic block diagram of an embodiment of a taskdistribution module 90 facilitating the example of FIG. 10 in accordancewith the present disclosure. The task distribution module 90 (e.g., of amanaging unit 18) includes a plurality of tables it uses to generatedispersed storage and task (DST) allocation information 100 for selecteddata and selected tasks received from a DS client module. The tablesinclude data storage information 108, task storage information 110, taskexecution module information 112, and task

sub-task mapping information 106.

The data storage information table 108 includes a data identification(ID) field 114, a data size field 116, an addressing information field118, dispersed storage (DS) information 120, and may further includeother information regarding the data, how the data is stored, and/or howit can be processed. For example, DS error encoded data #1 has a data IDof 1, a data size of AA (e.g., a byte size of a few Terabytes or more),addressing information of Addr_1_AA, and DS parameters of 3/5; SEG_1;and SLC_1. In this example, the addressing information may be a virtualaddress corresponding to the virtual address of the first storage word(e.g., one or more bytes) of the data and information on how tocalculate the other addresses, may be a range of virtual addresses forthe storage words of the data, physical addresses of the first storageword or the storage words of the data, may be a list of slice names ofthe encoded data slices of the data, etc. The DS parameters may includeidentity of an error encoding scheme, decode threshold/pillar width(e.g., 3/5 for the first data entry), segment security information(e.g., SEG_1), per slice security information (e.g., SLC_1), and/or anyother information regarding how the data was encoded into data slices.

The task storage information table 110 includes a task identification(ID) field 122, a task size field 124, an addressing information field126, dispersed storage (DS) information 128, and may further includeother information regarding the task, how it is stored, and/or how itcan be used to process data. For example, DS encoded task #2 has a taskID of 2, a task size of XY, addressing information of Addr_2_XY, and DSparameters of 3/5; SEG_2; and SLC_2. In this example, the addressinginformation may be a virtual address corresponding to the virtualaddress of the first storage word (e.g., one or more bytes) of the taskand information on how to calculate the other addresses, may be a rangeof virtual addresses for the storage words of the task, physicaladdresses of the first storage word or the storage words of the task,may be a list of slices names of the encoded slices of the task code,etc. The DS parameters may include identity of an error encoding scheme,decode threshold/pillar width (e.g., 3/5 for the first data entry),segment security information (e.g., SEG_2), per slice securityinformation (e.g., SLC_2), and/or any other information regarding howthe task was encoded into encoded task slices. Note that the segmentand/or the per-slice security information include a type of encryption(if enabled), a type of compression (if enabled), watermarkinginformation (if enabled), and/or an integrity check scheme (if enabled).

The task

sub-task mapping information table 106 includes a task field 136 and asub-task field 138. The task field 136 identifies a task stored in thememory of DSN memory 22 and the corresponding sub-task fields 138indicates whether the task includes sub-tasks and, if so, how many andif any of the sub-tasks are ordered (i.e., are dependent on the outcomeof another task) or non-ordered (i.e., are independent of the outcome ofanother task). In this example, the task

sub-task mapping information table 106 includes an entry for each taskstored in memory of the DSN memory 22 (e.g., task 1 through task k). Inparticular, this example indicates that task 1 includes 7 sub-tasks,task 2 does not include sub-tasks, and task k includes r number ofsub-tasks (where r is an integer greater than or equal to two).

The task execution module information table 112 includes a storage unitID field 130, a task execution module ID field 132, and a task executionmodule capabilities field 134. The storage unit ID field 130 includesthe identity of storage units in the DSN memory. The task executionmodule ID field 132 includes the identity of each task execution unit ineach storage unit. For example, storage unit 1 includes three taskexecutions modules (e.g., 1_1, 1_2, and 1_3). The task executioncapabilities field 134 includes identity of the capabilities of thecorresponding task execution unit. For example, task execution module1_1 includes capabilities X, where X includes one or more of MIPScapabilities, processing resources (e.g., quantity and capability ofmicroprocessors, CPUs, digital signal processors, co-processor,microcontrollers, arithmetic logic circuitry, and/or any other analogand/or digital processing circuitry), availability of the processingresources, memory information (e.g., type, size, availability, etc.),and/or any information germane to executing one or more tasks.

From these tables, the task distribution module 90 generates the DSTallocation information 100 to indicate where the data is stored, how topartition the data, where the task is stored, how to partition the task,which task execution units should perform which partial task on whichdata partitions, where and how intermediate results are to be stored,etc. If multiple tasks are being performed on the same data or differentdata, the task distribution module factors such information into itsgeneration of the DST allocation information.

Certain tasks performed by storage units of a DSN, including somemaintenance tasks, may adversely impact the integrity of the DSN (e.g.,cause irrecoverable data loss or unavailability of critical services) ifperformed at the wrong time. Such tasks may include, for example,updating hardware, reboot operations, process restarts, installingsoftware patches, and other “potentially destructive” tasks that resultin that result in temporary unavailability of a storage unit. Novelmethodologies are described herein for coordinated execution of thesetypes of tasks, such that a limited number of storage units of the DSN(e.g., storage units of a particular storage set or vault) are impactedat any one point in time before proceeding to process other storageunits.

As described more fully below in conjunction with FIGS. 12 and 13, suchmethodologies may involve an automated process that operates to ensureproper function of the DSN memory while performing tasks on a desirednumber of storage units. When such tasks are to be performed, aselection of associated storage units is added (e.g., by a managing unit18 and/or task distribution module 90) to an ordered list or queuecorresponding to the action(s) to be performed. Queues which have anentry are analyzed to determine if the storage unit identified at thetop of each such queue can be occupied or otherwise made unavailableduring performance of the associated task without compromising thereliability, for example, of a storage set/vault in which the storageunit participates. If so, the relevant queue entry is deleted and thetask is performed. If not, the relevant queue entry is moved to anotherlocation in the queue (e.g., the end of the queue) and the task isre-evaluated at a later time. Processing then continues until each queueis empty or until every storage device has been moved to the end of aqueue at least once without progress. If no progress has been made basedon the unavailability of storage units, further processing may bedelayed until the availability of one or more storage units is restored.

Referring more particularly to FIG. 12, a schematic block diagram of adispersed storage network (DSN) in accordance with the presentdisclosure is shown. In the illustrated embodiment, the DSN includesstorage sets 1-2, the network 24 of FIG. 1, and the managing unit 18 ofFIG. 1. Each of the storage sets 1-2 include a set of storage units,where each storage unit may be associated with more than one storageset. For example, storage set 1 includes storage units 1-5 (e.g., apillar width of five and a decode threshold of three) and storage set 2includes storage units 5-11 (e.g., a pillar width of seven and a decodethreshold of four). Each storage unit may be implemented utilizing thestorage unit 36 of FIG. 1. Hereafter, each storage set may beinterchangeably referred to as a set of storage units. While the DSN ofthe illustrated embodiment functions to initiate a maintenance task asdescribed more fully below, other types of tasks may be similarlyprocessed.

In an example of operation of initiating a maintenance task, for eachmaintenance task type of one or more maintenance tasks to be performedon the storage units of the DSN, the managing unit 18 generates anordered list (e.g., a queue) of one or more storage units to perform themaintenance task of the maintenance task type to produce one or moreordered lists. A maintenance task may include one or more of updatinghardware, rebooting software, restarting a particular software process,performing an upgrade, installing a software patch, loading a newsoftware revision, performing an off-line test, prioritizing tasksassociated with an online test, etc. As an example of generating theordered list, the managing unit 18 maintains a queue for the maintenancetask type, where each entry of the queue is associated with a uniquestorage unit and where a first ordered list entry corresponds to a topqueue entry (e.g., a next entry to come out of the queue when the queueis accessed to retrieve a next queue entry).

For a given ordered list, the managing unit 18 determines whether toinitiate execution of a maintenance task by a corresponding storage unitfor a first ordered list entry (e.g., top queue entry). The determiningincludes one or more of selecting the top queue entry, identifying acorresponding storage unit associated with the selected entry,predicting the impact of performing the maintenance task of themaintenance task type associated with the given ordered list,initiating/indicating to perform the maintenance task when the predictedimpact compares favorably to an impact threshold level, and indicatingnot to perform the maintenance task when the predicted impact comparesunfavorably to the impact threshold level.

Predicting the impact of performing a task may include one or more ofidentifying one or more storage sets associated with the storage unit,obtaining availability information regarding other storage unitsassociated with the one or more storage sets (e.g., receiving statusinformation from a DS client module 34 or controller 86 of each relevantstorage unit), and estimating a performance and/or storage reliabilitylevel should the storage unit be instructed to execute the maintenancetask. For example, the managing unit 18 determines not to initiateexecution of a maintenance task for storage unit 5 when a number ofother storage units of the storage set 1 are unavailable (e.g., storageunit 2 as indicated by status 1-5) and a resulting availability level ofstorage units for the storage set 1 is less than (or comparesunfavorably to) a desired storage unit availability threshold level; andwhen a number of other storage units of the storage set 2 areunavailable (e.g., storage unit 9 as indicated by status 5-11) and aresulting availability level of storage units for the storage set 2 isless than the desired storage unit availability threshold level. Asanother example, the managing unit 18 determines to perform amaintenance task for storage unit 4 when the resulting availabilitylevel of storage units of the storage set 1 is greater than (or comparesfavorably to) the desired storage unit availability threshold level.

When not initiating the execution of the maintenance task, the managingunit 18 moves the first ordered list entry to another location withinthe ordered list. Moving the entry includes at least one of identifyinga position, such as the bottom the queue, and moving the first orderedlist entry to that identified position. Having moved the first orderedlist entry, the managing unit 18 repeats the process for the nextordered list entry or an entry in a different ordered list (e.g.,corresponding to a different maintenance task). Selection of an orderedlist from a plurality of ordered lists may be based on, for example, oneor more of: a first-in-first-out (FIFO) approach to task requestprocessing, the number of entries in respective ordered lists, apriority level associated with a maintenance task type, storage unitavailability levels, a request, a predetermination, etc.

For certain tasks that do not depend on a particular storage unit/set ofstorage units, the management unit 18 may try an initial candidatestorage unit (e.g., randomly assigned or assigned based on availabilitycriteria). If the predicted impact of using the initial candidatestorage unit compares unfavorably to relevant threshold, the managementunit 18 may select another candidate storage unit and repeat the processuntil a favorable comparison is identified. If an available storageunit(s) is not identified for performing the task, the correspondingordered list entry is moved to another position in the ordered list orotherwise de-prioritized.

When initiating the execution of the maintenance task, the managing unit18 issues a maintenance request to the storage unit for the maintenancetask and deletes the maintenance task from the relevant ordered list.For example, the managing unit 18 issues, via the network 24, amaintenance message 1-5 to the storage unit 4 to facilitate execution ofthe associated maintenance task. In another example, the managing unit18 issues, via the network 24, a maintenance message 5-11 to the storageunit 8 to facilitate execution of an associated maintenance task. Havingdeleted the maintenance task, the process is repeated for the nextordered list.

FIG. 13 is a logic diagram illustrating an example of initiating amaintenance task in accordance with the present disclosure. Inparticular, a method is presented for use in conjunction with one ormore functions and features described in conjunction with FIGS. 1-12.The method begins or continues at step 140 where one or more processingmodules (e.g., of a dispersed storage network (DSN) managing unit 18 orcomputing device 16), for each maintenance task type of one or moremaintenance tasks performed in storage units of a DSN, generates anordered list of one or more storage units to perform a maintenance taskof the maintenance task type to produce one or more ordered lists. Forexample, the processing module maintains a queue for a given maintenancetask type, where each entry of the queue is associated with a uniquestorage unit.

For a given ordered list, the method continues at step 142 where theprocessing module determines whether to initiate execution of themaintenance task by a storage unit corresponding to a first ordered listentry. For example, the processing module selects a top queue entry,identifies a corresponding storage unit, predicts impact of performingthe maintenance task of the maintenance task type associated with thegiven ordered list, and indicates to perform the maintenance task whenthe predicted impact compares favorably to an impact threshold level.The method branches to step 144 where the processing module issues amaintenance request when the processing module determines to execute themaintenance task. When the processing module determines not to executethe maintenance task, the method instead branches to step 146 where theprocessing module moves the first-ordered list entry to another locationwithin the given ordered list. Moving the entry includes identifying aposition and moving the entry to the identified position (e.g., to thebottom). The method then continues to step 148 where the processingmodule selects a next ordered list or determines to continue processingof entries in the first ordered list.

When the maintenance task is to be executed, the processing moduleissues (as step 144) a maintenance request to the corresponding storageunit for the maintenance task and deletes the maintenance task from thegiven ordered list. For example, the processing module generates themaintenance/task request based on the maintenance/task type of themaintenance task, sends the maintenance request to the correspondingstorage unit, and deletes the ordered list entry of the maintenance taskfrom the given ordered list.

The method continues at step 148 where the processing module selects anext ordered list or determines to continue processing of entries in thefirst ordered list. Selecting a next ordered list following either ofsteps 144 or 146 may be based on one or more of: task pendency durationswherein multiple pending task/sub-task requests are processed in theorder in which they were generated (i.e., a FIFO approach), the numberof entries in at least some of the ordered lists, a priority levelassociated with a maintenance task type, storage unit availabilitylevels, a request, or a predetermination. Having selected the nextordered list, the method loops back to step 142 where the processingmodule determines whether to initiate execution of the maintenance task(e.g., of the next ordered list).

The methods described above in conjunction with the computing device andthe storage units can alternatively be performed by other modules of thedispersed storage network or by other devices. For example, anycombination of a first module, a second module, a third module, a fourthmodule, etc. of the computing device and the storage units may performthe method described above. In addition, at least one memory section(e.g., a first memory section, a second memory section, a third memorysection, a fourth memory section, a fifth memory section, a sixth memorysection, etc. of a non-transitory computer readable storage medium) thatstores operational instructions can, when executed by one or moreprocessing modules of one or more computing devices and/or by thestorage units of the dispersed storage network (DSN), cause the one ormore computing devices and/or the storage units to perform any or all ofthe method steps described above.

As may be used herein, the terms “substantially” and “approximately”provides an industry-accepted tolerance for its corresponding termand/or relativity between items. Such an industry-accepted toleranceranges from less than one percent to fifty percent. Such relativitybetween items ranges from a difference of a few percent to magnitudedifferences. As may also be used herein, the term(s) “configured to”,“operably coupled to”, “coupled to”, and/or “coupling” includes directcoupling between items and/or indirect coupling between items via anintervening item (e.g., an item includes, but is not limited to, acomponent, an element, a circuit, and/or a module) where, for an exampleof indirect coupling, the intervening item does not modify theinformation of a signal but may adjust its current level, voltage level,and/or power level. As may further be used herein, inferred coupling(i.e., where one element is coupled to another element by inference)includes direct and indirect coupling between two items in the samemanner as “coupled to”. As may even further be used herein, the term“configured to”, “operable to”, “coupled to”, or “operably coupled to”indicates that an item includes one or more of power connections,input(s), output(s), etc., to perform, when activated, one or more itscorresponding functions and may further include inferred coupling to oneor more other items. As may still further be used herein, the term“associated with”, includes direct and/or indirect coupling of separateitems and/or one item being embedded within another item.

As may be used herein, the term “compares favorably”, indicates that acomparison between two or more items, signals, etc., provides a desiredrelationship. For example, when the desired relationship is that signal1 has a greater magnitude than signal 2, a favorable comparison may beachieved when the magnitude of signal 1 is greater than that of signal 2or when the magnitude of signal 2 is less than that of signal 1. As maybe used herein, the term “compares unfavorably”, indicates that acomparison between two or more items, signals, etc., fails to providethe desired relationship.

As may also be used herein, the terms “processing module”, “processingcircuit”, “processor”, and/or “processing unit” may be a singleprocessing device or a plurality of processing devices. Such aprocessing device may be a microprocessor, micro-controller, digitalsignal processor, microcomputer, central processing unit, fieldprogrammable gate array, programmable logic device, state machine, logiccircuitry, analog circuitry, digital circuitry, and/or any device thatmanipulates signals (analog and/or digital) based on hard coding of thecircuitry and/or operational instructions. The processing module,module, processing circuit, and/or processing unit may be, or furtherinclude, memory and/or an integrated memory element, which may be asingle memory device, a plurality of memory devices, and/or embeddedcircuitry of another processing module, module, processing circuit,and/or processing unit. Such a memory device may be a read-only memory,random access memory, volatile memory, non-volatile memory, staticmemory, dynamic memory, flash memory, cache memory, and/or any devicethat stores digital information. Note that if the processing module,module, processing circuit, and/or processing unit includes more thanone processing device, the processing devices may be centrally located(e.g., directly coupled together via a wired and/or wireless busstructure) or may be distributedly located (e.g., cloud computing viaindirect coupling via a local area network and/or a wide area network).Further note that if the processing module, module, processing circuit,and/or processing unit implements one or more of its functions via astate machine, analog circuitry, digital circuitry, and/or logiccircuitry, the memory and/or memory element storing the correspondingoperational instructions may be embedded within, or external to, thecircuitry comprising the state machine, analog circuitry, digitalcircuitry, and/or logic circuitry. Still further note that, the memoryelement may store, and the processing module, module, processingcircuit, and/or processing unit executes, hard coded and/or operationalinstructions corresponding to at least some of the steps and/orfunctions illustrated in one or more of the Figures. Such a memorydevice or memory element can be included in an article of manufacture.

One or more embodiments have been described above with the aid of methodsteps illustrating the performance of specified functions andrelationships thereof. The boundaries and sequence of these functionalbuilding blocks and method steps have been arbitrarily defined hereinfor convenience of description. Alternate boundaries and sequences canbe defined so long as the specified functions and relationships areappropriately performed. Any such alternate boundaries or sequences arethus within the scope and spirit of the claims. Further, the boundariesof these functional building blocks have been arbitrarily defined forconvenience of description. Alternate boundaries could be defined aslong as the certain significant functions are appropriately performed.Similarly, flow diagram blocks may also have been arbitrarily definedherein to illustrate certain significant functionality.

To the extent used, the flow diagram block boundaries and sequence couldhave been defined otherwise and still perform the certain significantfunctionality. Such alternate definitions of both functional buildingblocks and flow diagram blocks and sequences are thus within the scopeand spirit of the claims. One of average skill in the art will alsorecognize that the functional building blocks, and other illustrativeblocks, modules and components herein, can be implemented as illustratedor by discrete components, application specific integrated circuits,processors executing appropriate software and the like or anycombination thereof.

In addition, a flow diagram may include a “start” and/or “continue”indication. The “start” and “continue” indications reflect that thesteps presented can optionally be incorporated in or otherwise used inconjunction with other routines. In this context, “start” indicates thebeginning of the first step presented and may be preceded by otheractivities not specifically shown. Further, the “continue” indicationreflects that the steps presented may be performed multiple times and/ormay be succeeded by other activities not specifically shown. Further,while a flow diagram indicates a particular ordering of steps, otherorderings are likewise possible provided that the principles ofcausality are maintained.

The one or more embodiments are used herein to illustrate one or moreaspects, one or more features, one or more concepts, and/or one or moreexamples. A physical embodiment of an apparatus, an article ofmanufacture, a machine, and/or of a process may include one or more ofthe aspects, features, concepts, examples, etc. described with referenceto one or more of the embodiments discussed herein. Further, from Figureto Figure, the embodiments may incorporate the same or similarly namedfunctions, steps, modules, etc. that may use the same or differentreference numbers and, as such, the functions, steps, modules, etc. maybe the same or similar functions, steps, modules, etc. or differentones.

Unless specifically stated to the contra, signals to, from, and/orbetween elements in a figure of any of the figures presented herein maybe analog or digital, continuous time or discrete time, and single-endedor differential. For instance, if a signal path is shown as asingle-ended path, it also represents a differential signal path.Similarly, if a signal path is shown as a differential path, it alsorepresents a single-ended signal path. While one or more particulararchitectures are described herein, other architectures can likewise beimplemented that use one or more data buses not expressly shown, directconnectivity between elements, and/or indirect coupling between otherelements as recognized by one of average skill in the art.

The term “module” is used in the description of one or more of theembodiments. A module implements one or more functions via a device suchas a processor or other processing device or other hardware that mayinclude or operate in association with a memory that stores operationalinstructions. A module may operate independently and/or in conjunctionwith software and/or firmware. As also used herein, a module may containone or more sub-modules, each of which may be one or more modules.

As may further be used herein, a computer readable memory includes oneor more memory elements. A memory element may be a separate memorydevice, multiple memory devices, or a set of memory locations within amemory device. Such a memory device may be a read-only memory, randomaccess memory, volatile memory, non-volatile memory, static memory,dynamic memory, flash memory, cache memory, and/or any device thatstores digital information. The memory device may be in a form a solidstate memory, a hard drive memory, cloud memory, thumb drive, servermemory, computing device memory, and/or other physical medium forstoring digital information. A computer readable memory/storage medium,as used herein, is not to be construed as being transitory signals perse, such as radio waves or other freely propagating electromagneticwaves, electromagnetic waves propagating through a waveguide or othertransmission media (e.g., light pulses passing through a fiber-opticcable), or electrical signals transmitted through a wire.

While particular combinations of various functions and features of theone or more embodiments have been expressly described herein, othercombinations of these features and functions are likewise possible. Thepresent disclosure is not limited by the particular examples disclosedherein and expressly incorporates these other combinations.

What is claimed is:
 1. A method for execution by one or more processingmodules of one or more computing devices of a dispersed storage network(DSN) having a plurality of storage units, the method comprises:generating an ordered list for each task type of a plurality of tasks tobe performed on storage units of the plurality of storage units,including generating at least a first ordered list having a firstordered list entry, wherein each ordered list entry of an ordered listis associated with an individual storage unit of the plurality ofstorage units; and determining whether to initiate execution of a taskassociated with the first ordered list entry, the determining including:identifying a storage unit associated with the first ordered list entry;predicting an impact of performing the task on the identified storageunit to generate a predicted impact; and performing a comparison of thepredicted impact to an impact threshold level, and (1) when thecomparison is unfavorable, determining not to initiate execution of thetask, and (2) when the comparison is favorable, indicating to performthe task on the identified storage unit.
 2. The method of claim 1,wherein determining not to initiate the execution of the task includes:identifying another position in the first ordered list; and moving thefirst ordered list entry to the another position.
 3. The method of claim1, wherein indicating to perform the task on the identified storage unitincludes: issuing a task request for reception by the identified storageunit to facilitate execution of the task; and removing the first orderedlist entry from the first ordered list.
 4. The method of claim 1,wherein predicting an impact of performing the task includes one or moreof: identifying one or more sets of storage units associated with thestorage unit; obtaining availability information regarding additionalstorage units associated with the one or more sets of storage units; orestimating a performance and/or storage reliability level should thestorage unit be instructed to perform the task.
 5. The method of claim1, wherein the plurality of tasks includes at least one of the followingtask types: updating hardware, rebooting software, restarting a softwareprocess, performing an upgrade, installing a software patch, loading anew software revision, performing an off-line test, or prioritizingtasks associated with an online test.
 6. The method of claim 1, whereingenerating the first ordered list includes maintaining a queue for atask type associated first ordered list, wherein the first ordered listentry corresponds to a top entry in the queue.
 7. The method of claim 1,wherein generating an ordered list for each task type of a plurality oftasks includes generating a plurality of ordered lists, and whereindetermining whether to initiate execution of a task associated with thefirst ordered list entry further includes selecting the first orderedlist entry from an ordered list of the plurality of ordered lists. 8.The method of claim 7, wherein selecting the first ordered list entryfrom an ordered list of the plurality of ordered lists is based on atleast one of: the order in which respective entries in the plurality ofordered lists were generated, the number of entries in the plurality ofordered lists, a priority level associated with a task type, storageunit availability levels, a request, or a predetermination.
 9. Themethod of claim 1, wherein generating an ordered list for each task typeof a plurality of tasks includes generating a plurality of orderedlists, the method repeated for each ordered list entry of the pluralityof ordered lists.
 10. A method for execution by one or more processingmodules of one or more computing devices of a dispersed storage network(DSN), the DSN having a plurality of storage units, the methodcomprises: generating an ordered list for at least one maintenance tasktype corresponding to a maintenance task to be performed on one or morestorage units of the plurality of storage units, including generating atleast a first ordered list having a first ordered list entry, whereineach ordered list entry of an ordered list is associated with anindividual storage unit of the one or more storage units, and whereinexecution of the maintenance task by a storage unit results in temporaryunavailability of the storage unit; and determining whether to initiateexecution of the maintenance task associated with the first ordered listentry, the determining including: identifying the storage unitassociated with the first ordered list entry; predicting an impact ofperforming the maintenance task on the identified storage unit togenerate a predicted impact; and performing a comparison of thepredicted impact to an impact threshold level, and (1) when thecomparison is unfavorable, determining not to initiate execution of themaintenance task, and (2) when the comparison is favorable, indicatingto perform the maintenance task on the identified storage unit.
 11. Themethod of claim 10, wherein the maintenance task corresponds to at leastone of the following maintenance task types: updating hardware,rebooting software, restarting a software process, performing anupgrade, installing a software patch, loading a new software revision,performing an off-line test, or prioritizing tasks associated with anonline test.
 12. The method of claim 10, wherein determining not toinitiate the execution of the maintenance task includes: identifyinganother position in the first ordered list; and moving the first orderedlist entry to the another position.
 13. The method of claim 10, whereinindicating to perform the maintenance task on the identified storageunit further includes: issuing a task request for reception by theidentified storage unit to facilitate execution of the maintenance task;and removing the first ordered list entry from the first ordered list.14. The method of claim 10, wherein predicting an impact of performingthe maintenance task includes one or more of: identifying one or moresets of storage units associated with the storage unit; obtainingavailability information regarding additional storage units associatedwith the one or more sets of storage units; or estimating a performanceand/or storage reliability level should the storage unit be instructedto perform the maintenance task.
 15. A computing device of a group ofcomputing devices of a dispersed storage network (DSN) having aplurality of storage units, the computing device comprises: a networkinterface; a local memory; and a processing module operably coupled tothe network interface and the local memory, wherein the processingmodule operates to: generate an ordered list for each task type of aplurality of tasks to be performed on storage units of the plurality ofstorage units, including at least a first ordered list having a firstordered list entry, wherein each ordered list entry of an ordered listis associated with an individual storage unit of the plurality ofstorage units; and determine whether to initiate execution of a taskassociated with the first ordered list entry, including: identifying astorage unit associated with the first ordered list entry; predicting animpact of performing the task on the identified storage unit to generatea predicted impact; and performing a comparison of the predicted impactto an impact threshold level, and (1) when the comparison isunfavorable, determining not to initiate execution of the task, and (2)when the comparison is favorable, indicating to perform the task on theidentified storage unit.
 16. The computing device of claim 15, whereindetermining not to initiate the execution of the task includes:identifying another position in the first ordered list; and moving thefirst ordered list entry to the another position.
 17. The computingdevice of claim 15, wherein indicating to perform the task on theidentified storage unit includes: issuing a task request, via thenetwork interface, for reception by the identified storage unit tofacilitate execution of the task; and removing the first ordered listentry from the first ordered list.
 18. The computing device of claim 15,wherein predicting an impact of performing the task includes:identifying one or more sets of storage units associated with thestorage unit; obtaining availability information regarding additionalstorage units associated with the one or more sets of storage units; andestimating a performance and/or storage reliability level should thestorage unit be instructed to perform the task.
 19. The computing deviceof claim 15, wherein generating the first ordered list includesmaintaining a queue for a task type associated first ordered list,wherein the first ordered list entry corresponds to a top entry in thequeue.
 20. The computing device of claim 15, wherein the plurality oftasks includes at least one of the following task types: updatinghardware, rebooting software, restarting a software process, performingan upgrade, installing a software patch, loading a new softwarerevision, performing an off-line test, or prioritizing tasks associatedwith an online test.